#pragma once
#include<iostream>
#include"RBTree.h"
using namespace std;

template<class k>
class myset {


	struct SetKeyOfT {
		const k& operator()(const k& data) {
			return data;
		}
	};


public:
	typedef typename RBTree<k,const k, SetKeyOfT>::Iterator iterator;
	typedef typename RBTree<k, const k, SetKeyOfT>::const_Iterator constiterator;

	pair<iterator,bool> Insert( k data) {
		return _t.Insert(data);
	}
	void print() {
		_t.InOrder();
	}
	constiterator begin() const {
		return _t.begin();
	}
	constiterator end() const {
		return _t.end();
	}
	iterator begin() {
		return _t.begin();
	}

	iterator end() {
		return _t.end();
	}

private:
	RBTree<k, const k, SetKeyOfT> _t;
};